gtk-demo: Flesh out the settings demo
authorMatthias Clasen <mclasen@redhat.com>
Mon, 1 Jun 2020 03:42:36 +0000 (23:42 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 1 Jun 2020 03:43:58 +0000 (23:43 -0400)
Add columns for type and default value.

demos/gtk-demo/listview_settings.c
demos/gtk-demo/listview_settings.ui

index 944b764dd69367b35159e0836ff03e2449e1e21f..deecdaeb57c8b7844e8e4038a5d79b77bcaeaa87 100644 (file)
@@ -25,6 +25,8 @@ enum {
   PROP_SUMMARY,
   PROP_DESCRIPTION,
   PROP_VALUE,
+  PROP_TYPE,
+  PROP_DEFAULT_VALUE,
 
   N_PROPS
 };
@@ -65,6 +67,21 @@ settings_key_get_property (GObject    *object,
       }
       break;
 
+    case PROP_TYPE:
+      {
+        const GVariantType *type = g_settings_schema_key_get_value_type (self->key);
+        g_value_set_string (value, g_variant_type_peek_string (type));
+      }
+      break;
+
+    case PROP_DEFAULT_VALUE:
+      {
+        GVariant *variant = g_settings_schema_key_get_default_value (self->key);
+        g_value_take_string (value, g_variant_print (variant, FALSE));
+        g_variant_unref (variant);
+      }
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -98,6 +115,10 @@ settings_key_class_init (SettingsKeyClass *klass)
     g_param_spec_string ("summary", NULL, NULL, NULL, G_PARAM_READABLE);
   properties[PROP_VALUE] =
     g_param_spec_string ("value", NULL, NULL, NULL, G_PARAM_READABLE);
+  properties[PROP_TYPE] =
+    g_param_spec_string ("type", NULL, NULL, NULL, G_PARAM_READABLE);
+  properties[PROP_DEFAULT_VALUE] =
+    g_param_spec_string ("default-value", NULL, NULL, NULL, G_PARAM_READABLE);
 
   g_object_class_install_properties (gobject_class, N_PROPS, properties);
 }
index 8bf12cf496d9bcec140e2110ba35f1e3655b2d97..cc9f7f8a9c9776b0bec8d88eb2194c7d7a2b5e29 100644 (file)
       </object>
     </property>
   </template>
+</interface>
+                        ]]></property>
+                          </object>
+                        </property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkColumnViewColumn">
+                        <property name="title">Type</property>
+                        <property name="factory">
+                          <object class="GtkBuilderListItemFactory">
+                            <property name="bytes"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="GtkListItem">
+    <property name="child">
+      <object class="GtkLabel">
+        <property name="xalign">0</property>
+        <binding name="label">
+          <lookup name="type" type="SettingsKey">
+            <lookup name="item">GtkListItem</lookup>
+          </lookup>
+        </binding>
+      </object>
+    </property>
+  </template>
+</interface>
+                        ]]></property>
+                          </object>
+                        </property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkColumnViewColumn">
+                        <property name="title">Default</property>
+                        <property name="factory">
+                          <object class="GtkBuilderListItemFactory">
+                            <property name="bytes"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="GtkListItem">
+    <property name="child">
+      <object class="GtkLabel">
+        <property name="xalign">0</property>
+        <binding name="label">
+          <lookup name="default-value" type="SettingsKey">
+            <lookup name="item">GtkListItem</lookup>
+          </lookup>
+        </binding>
+      </object>
+    </property>
+  </template>
 </interface>
                         ]]></property>
                           </object>